package com.atguigu.lease.model.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;


public enum ItemType implements BaseEnum {

    APARTMENT(1, "公寓"),

    ROOM(2, "房间");

    /*
    *TODO: @EnumValue 与 @JsonValue 的作用
    *   1.@EnumValue的作用
    *       - 在java中的枚举类型映射到sql中的类型时，通过注解指定映射的类型
    *       - 比如说ItemType.APARTMENT类型在注解的作用下映射到数据库时就是code的值
    *       - 如果没有指定那么ItemType.APARTMENT类型就会被映射到"APARTMEN"
    *   2.@JsonValue
    *       - 从数据库到java对象时,数据中的int类型会通过@EnumValue映射到对应的枚举类实例
    *       - 比如说1就会映射到ItemType.APARTMENT,然后我们从java对象向前端传时,又要经历类型的转换
    *       - 如果没有做处理,那么ItemType.APARTMENT就被映射成了APARTMENT,通过@JsonValue注解,
    *       - 就可以把ItemType.APARTMENT映射到指定的字段
    * */

    @EnumValue
    @JsonValue
    private Integer code;
    private String name;

    @Override
    public Integer getCode() {
        return this.code;
    }


    @Override
    public String getName() {
        return name;
    }

    ItemType(Integer code, String name) {
        this.code = code;
        this.name = name;
    }

}
